In this tutorial, you have learned the following:
Visual artifacts can appear on objects that have textures mapped to them due to the discrete nature of textures. These artifacts are most pronounced when the texture's mapped size is larger or smaller than its actual size.
Filtering techniques can reduce these artifacts, transforming visual popping into something more visually palatable. This is most easily done for texture magnification.
Mipmaps are reduced size versions of images. The purpose behind them is to act as pre-filtered versions of images, so that texture sampling hardware can effectively sample and filter lots of texels all at once. The downside is that it can appear to over-filter textures, causing them to blend down to lower mipmaps in areas where detail could be retained.
Filtering can be applied between mipmap levels. Mipmap filtering can produce quite reasonable results with a relatively negligible performance penalty.
Anisotropic filtering attempts to rectify the over-filtering problems with mipmapping by filtering based on the coverage area of the texture access. Anisotropic filtering is controlled with a maximum value, which represents the maximum number of additional samples the texture access will use to compose the final color.
Try doing these things with the given programs.
Use non-mipmap filtering with anisotropic filtering and compare the results with the mipmap-based anisotropic version.
Change the GL_TEXTURE_MAX_LEVEL
of the checkerboard
texture. Subtract 3 from the computed max level. This will prevent OpenGL
from accessing the bottom 3 mipmaps: 1x1, 2x2, and 4x4. See what happens.
Notice how there is less grey in the distance, but some of the shimmering
from our non-mipmapped version has returned.
Go back to Basic Texture in the previous tutorial and modify the sampler to use linear mag and min filtering on the 1D texture. See if the linear filtering makes some of the lower resolution versions of the table more palatable. If you were to try this with the 2D lookup texture in Material Texture tutorial, it would cause filtering in both the S and T coordinates. This would mean that it would filter across the shininess of the table as well. Try this and see how this affects the results. Also try using linear filtering on the shininess texture.